# Лекция: Перегрузка методов в Java

Перегрузка методов в Java - это механизм, позволяющий создавать несколько методов с одним и тем же именем, но с разными параметрами. Перегруженные методы могут отличаться количеством параметров, типами параметров или их порядком.

```java
void foo() { ... }

void foo(int a) { ... }

void foo(String s) { ... }

void foo(int a, String s) { ... }

void foo(String s, int a) { ... }
```

Когда вы вызываете перегруженный метод, Java использует список параметров для определения, какой из методов следует выполнить.

---

# Практические задания

1. **Создайте перегруженный метод `print`, который принимает целое число или строку и выводит ее на экран.** (Сложность: 1/5)
```java
void print(int a) {
    System.out.println(a);
}

void print(String s) {
    System.out.println(s);
}
```

2. **Создайте перегруженный метод `max`, который возвращает максимальное значение из двух целых чисел или двух дробных чисел.** (Сложность: 2/5)
```java
int max(int a, int b) {
    return a > b ? a : b;
}

double max(double a, double b) {
    return a > b ? a : b;
}
```

3. **Создайте перегруженный метод `sum`, который возвращает сумму двух или трех целых чисел.** (Сложность: 2/5)
```java
int sum(int a, int b) {
    return a + b;
}

int sum(int a, int b, int c) {
    return a + b + c;
}
```

4. **Создайте перегруженный метод `multiply`, который возвращает произведение двух целых чисел, двух дробных чисел или целого числа и дробного числа.** (Сложность: 2/5)
```java
int multiply(int a, int b) {
    return a * b;
}

double multiply(double a, double b) {
    return a * b;
}

double multiply(int a, double b) {
    return a * b;
}
```

5. **Создайте перегруженный метод `printArray`, который принимает массив целых чисел или массив строк и выводит его содержимое на экран.** (Сложность: 3/5)
```java
void printArray(int[] array) {
    for (int number : array) {
        System.out.println(number);
    }
}

void printArray(String[] array) {
    for (String str : array) {
        System.out.println(str);
    }
}
```